# 进程
"""
单核CPU实现多任务原理：错做系统轮流让各任务交替执行
多核CPU实现多任务原理：并发执行
并发和并行：
    **并发**：一个CPU（单核），同一时间CPU执行多个任务
    **并行**：多个CPU（多核），当并行线程少于等于核数则并行，当大于核数并发
实现多任务的方式：
    多进程模式：操作系统的结构基础，资源分配和调度的基本单位。进程是线程的容器；程序是指令，数据及其组织形式的描述，进程是程序的实体。
        一个任务一个进程：比如打开文本编辑器、打开QQ、打开微信
        优点：稳定性高、一个进程崩溃了，不会影响其他的进程
        - 缺点：
            - 创建进程开销发
            - 操作系统能同时运行的进程是有限的
    多线程模式：
    协程

    **注意**：一个进程包含多个线程，一个线程包含多个协程

1. 进程创建：
    linux  ->fork模块  创建
    windows -> multiprocessing模块

    步骤：
        from multiprocessing import Process
        p1 = Process(target=task1, name="task1", args=(1,))  #  进程、名字、参数
        p1.start() # 启动进程并执行任务 注意：  p1.run() 只是执行了任务，但是没有启动进程
        terminate() 终止进程
"""
import os
from multiprocessing import Process
from time import sleep


def task1():
    while True:
        sleep(1)
        print("这是任务1----------", os.getpid(), ": ", os.getppid())  # getppid:获取父ID


def task2():
    while True:
        sleep(2)
        print("这是任务2----------", os.getpid(), ": ", os.getppid())


# 创建进程

if __name__ == '__main__':
    print("当前进程的号：",os.getpid())
    p1 = Process(target=task1, name="task1")
    p1.start()
    print(p1.name)
    p2 = Process(target=task2, name="task2")
    p2.start()
    print(p2.name)
